package com.lovo.pis.utils;

import com.aliyun.teaopenapi.models.Config;
import com.aliyun.tea.*;

import com.aliyun.dysmsapi20170525.models.*;

import com.aliyun.teautil.models.*;

import java.util.Random;

public class Sample {


    /**
     * 使用AK&SK初始化账号Client
     * @param accessKeyId
     * @param accessKeySecret
     * @return Client
     * @throws Exception
     */
    public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
        Config config = new Config()
                // 您的 AccessKey ID
                .setAccessKeyId(accessKeyId)
                // 您的 AccessKey Secret
                .setAccessKeySecret(accessKeySecret);
        // 访问的域名
        config.endpoint = "dysmsapi.aliyuncs.com";
        return new com.aliyun.dysmsapi20170525.Client(config);
    }

    //生成随机数

    /**
     *
     * @param strSource//加字母和随机数装入集合,原始随机字符串，可自己定义
     * @param num    //生成几位的验证码，可自己定义
     * @return
     */
    public static String randomNum(String strSource,int num){
        Random random = new Random();
        int maxLength=strSource.length()-1;//随机的索引最大程度，因为索引从0开始，所以最大值的索引 是长度-1
        String[] strSources = strSource.split("");//切分字符串为可选的字符数组，用于索引选取
        //最终的验证码进行拼接,stringBuffer只创建一个对象节省内存，并且速度快，这个场景不需要线程安全
        StringBuffer appendStrEnd = new StringBuffer();
        for (int i = 0; i < num; i++) {
            int randomIndex = random.nextInt(maxLength);//生成索引，索引位你的原始字符串中的一个字符的位置
            String strAlone = strSources[randomIndex];//获取字符串中的单个字符值
            appendStrEnd.append(strAlone);
        }
        return appendStrEnd.toString();

    }
    public static void SendSMSByAli(String phone,String code) throws Exception {
        com.aliyun.dysmsapi20170525.Client client = Sample.createClient("LTAI5tKMsYujffZpEhmqEHRz","3LjajCtd6dCeGVHrDmiuog7wJV4P5d");
        SendSmsRequest sendSmsRequest = new SendSmsRequest()
                .setPhoneNumbers(phone)
                .setSignName("阿里云短信测试")//签名名称【注意别写成模板名称】
                .setTemplateCode("SMS_154950909")//模板id
                .setTemplateParam("{\"code\":\""+code+"\"}");
        RuntimeOptions runtime = new RuntimeOptions();
        try {
            // 复制代码运行请自行打印 API 的返回值
            client.sendSmsWithOptions(sendSmsRequest, runtime);
        } catch (TeaException error) {
            // 如有需要，请打印 error
            com.aliyun.teautil.Common.assertAsString(error.message);
        } catch (Exception _error) {
            TeaException error = new TeaException(_error.getMessage(), _error);
            // 如有需要，请打印 error
            com.aliyun.teautil.Common.assertAsString(error.message);
        }
    }

    public static void main(String[] args) throws Exception {
        Sample.SendSMSByAli("18328714737","1111");
    }

}